/**
 * Created by zhouli on 18/2/4
 * Email li.zhou@huilianyi.com
 * 把所有的组件都放在这个文件
 * 方便使用，要使用哪一个就导入哪一个
 *
 * ————————————————————————————————————————————————————————————————
 * 2018/11/29 ZaraNengap
 * For code reader:
 * 这个文件夹里直接放的都是系统级组件
 * 何为系统级？简单来说，复制到其他项目也能用，没有本项目逻辑的组件。
 * 有项目逻辑的组件都扔到template里面去
 * 最好系统级组件只有一个人来维护（没错目前是我）
 *
 * 其中我个人最满意的组件排名：
 * Condition(最符合现代组件的逻辑封装思想) > SlideFrame(对于antd的抽屉组件的未知先预) > Selector(非常好用) > Control(逻辑处理中心)
 *
 * 最不满意的组件排名
 * SearchArea(思想出了问题) > Chooser(又丑又繁琐) > BasicInfo(放弃维护的东西，和searchArea关系太紧密了）> Inputter(除了一个地方完全没用到)
 *
 * 希望后来的维护者能够写出类似Condition这种符合现代思想的组件，而不是一套死板的UI逻辑封装，有需求就硬塞进去(SearchArea)
 * 现代组件是基础逻辑封装，而不是业务和一堆UI封装，跟着这句话走就对了
 * 当然，基础组件也是可以放进来的（表单组件等）
 * ————————————————————————————————————————————————————————————————
 * 2019/7/18 ZaraNengap
 * 近期最满意的组件排名有更新：
 * 1、DateRangePicker(引入format & parse思想，发现这种模式非常好用，同时引申到了AdvancedSearch上也使用了这种思想；同时，也是我认为完成度最高的组件)
 * 2、AdvancedSearch(重构原本SearchArea的方法，新的组件简洁而且功能强大，扩展性非常高)
 * 3、FullScreen(一切弹窗、定位类需要挂载在最外层DOM上组件的模版)
 * 4、Condition（届于React15版本没有error boundary，所以导致这个组件在条件参数上出了限制）
 * 5、Control(组件思想非常"React")
 *
 * 最不满意：
 * 1、SearchArea(跟AdvancedSearch一比就知道为什么这个组件的思想出了问题）
 * 2、Chooser(内部逻辑真的烦，越想把任何情况都考虑到就越难用和维护)
 *
 * 有关其他组件的一些处理失误：
 * SlideFrame：
 * 当时写的时候没有参照FullScreen组件作出合理的挂载系统，导致其是一个页面级组件，严格来说不够"组件"
 * ResizeTable：
 * 因为要计算列宽，又防止外部改变columns(比如有的Chooser换type)
 * 所以一开始在该方法内的componentWillReceived里比较了nextProps和props内的columns
 * 可以比较里面每一列的dataIndex是否一致，如果不一致则判断为外部更改了列则重新计算列宽重新渲染
 * 但是后面发现有的在columns内的render内如果出现了内容变更则没有重新渲染
 * 其实按照官方Table的思路，我不需要每次都设置columns，但是这里不set内容就不会改变
 * 所以这里暂时放弃了内容比较，每次渲染都要重新计算宽度（宽度其实可以存下来，计算量不是很大暂时就没存）
 * 肯定有方法既能每次更新状态内容都自动渲染又不用每次都重新设置columns
 * Control：
 * 原本是各种逻辑处理，因为业务需要现在接入了大量业务代码，使得其变成一个项目级组件，但是我依然很喜欢我这个组件所用的思想
 * Viewer：
 * 内部直接嵌入office online的页面来偷鸡，虽然office online官网写着免费使用，但是总担心跟商用和版权扯上关系
 * Selector：
 * Selector返回值的时候并没有提供能返回label的方法，除非你使用entity来模拟，但是这样就跟antd的Select一样难用
 * 但是我在AdvancedSearch中还是拿到了label，在那里的代码应该放到Selector里最好
 * Loading & Error：
 * 两个几乎没有用到的组件
 * HanWang & ScanSnap：
 * 两个环境和设备绑定的组件，放到系统组件里感觉有点不严谨
 * DataSource：
 * 最初是想通过这个搭建数据源系统，因为他既能是页面也能是选择组件，这样我每个页面都可以通过配置来实现，减少代码量
 * 结果，这个东西的开发和替换成本较高，而且引申出的表单级联和外部数据源方案都被老大拒了
 * 所以这个东西只能用前端存储JSON来实现页面的配置，而且这个东西目前还不完善，又赶上中控所有数据表格的重构
 * 所以就暂时搁浅了
 *
 */
//导入有业务的组件
import {
  SelectDepOrPerson,
  LanguageInput,
  SelectDepByRole,
  ExternalExpenseImport,
} from 'components/template/index';

import ImageUpload from 'components/image-upload';
import ListSelector from 'components/list-selector';
import Chooser from 'components/chooser';
import ListSort from 'components/list-sort';
import Selector from 'components/selector';
import Inputter from 'components/inputter';
import SearchArea from 'components/search-area'
import DateRangePicker from 'components/date-range-picker'
import AdvancedSearch from 'components/advanced-search'
import Control from 'components/control'
import Condition from 'components/condition'
import Table from 'components/table'
import AdvancedTable from 'components/advanced-table'

export {
  SelectDepOrPerson,
  LanguageInput,
  SelectDepByRole,
  ImageUpload,
  ListSelector,
  Chooser,
  ListSort,
  ExternalExpenseImport,
  Selector,
  Inputter,
  SearchArea,
  DateRangePicker,
  AdvancedSearch,
  Control,
  Condition,
  Table,
  AdvancedTable
}
